﻿using System;
using System.Collections.Generic;
using SOAPReniec.Persistencia;
using SOAPReniec.Dominio;
using System.Data;
using System.Data.SqlClient;

namespace SOAPReniec
{
    public class Reniec : IReniec
    {
        public List<Persona> ObtenerPersonas()
        {
            List<Persona> lista = new List<Persona>();

            using (SqlConnection con = new SqlConnection(ConexionUtil.ObtenerCadena()))
            {
                using (SqlCommand cmd = new SqlCommand("USP_ListarPersonas", con) { CommandType = CommandType.StoredProcedure })
                {
                    con.Open();
                    using (SqlDataReader dr = cmd.ExecuteReader())
                    {
                        int Paterno = dr.GetOrdinal("Paterno");
                        int Materno = dr.GetOrdinal("Materno");
                        int Nombres = dr.GetOrdinal("Nombres");
                        int Sexo = dr.GetOrdinal("Sexo");
                        int Tipo_Documento = dr.GetOrdinal("Tipo_Documento");
                        int Documento = dr.GetOrdinal("Documento");

                        int colCount = dr.FieldCount;
                        object[] value = new object[colCount];

                        while (dr.Read())
                        {
                            dr.GetValues(value);
                            Persona entidad = new Persona { 
                                Paterno = Convert.ToString(value[Paterno]), 
                                Materno = Convert.ToString(value[Materno]), 
                                Nombres = Convert.ToString(value[Nombres]), 
                                Sexo = Convert.ToString(value[Sexo]), 
                                TipoDocumento = Convert.ToString(value[Tipo_Documento]), 
                                Documento = Convert.ToString(value[Documento]) };
                            lista.Add(entidad);
                        }

                    }
                }
            }
            return lista;
        }

        public List<Persona> ObtenerPersonasDocumento(string nroDocumento)
        {
            List<Persona> lista = new List<Persona>();

            using (SqlConnection con = new SqlConnection(ConexionUtil.ObtenerCadena()))
            {
                using (SqlCommand cmd = new SqlCommand("USP_ListarPersonasDocumento", con) { CommandType = CommandType.StoredProcedure })
                {
                    cmd.Parameters.Add("@DOCUMENTO", SqlDbType.VarChar, 20).Value = nroDocumento;
                    con.Open();
                    using (SqlDataReader dr = cmd.ExecuteReader())
                    {
                        int Paterno = dr.GetOrdinal("Paterno");
                        int Materno = dr.GetOrdinal("Materno");
                        int Nombres = dr.GetOrdinal("Nombres");
                        int Sexo = dr.GetOrdinal("Sexo");
                        int Tipo_Documento = dr.GetOrdinal("Tipo_Documento");
                        int Documento = dr.GetOrdinal("Documento");

                        int colCount = dr.FieldCount;
                        object[] value = new object[colCount];

                        while (dr.Read())
                        {
                            dr.GetValues(value);
                            Persona entidad = new Persona
                            {
                                Paterno = Convert.ToString(value[Paterno]),
                                Materno = Convert.ToString(value[Materno]),
                                Nombres = Convert.ToString(value[Nombres]),
                                Sexo = Convert.ToString(value[Sexo]),
                                TipoDocumento = Convert.ToString(value[Tipo_Documento]),
                                Documento = Convert.ToString(value[Documento])
                            };
                            lista.Add(entidad);
                        }

                    }
                }
            }
            return lista;
        }
    }
}



 

